/* 
 * Author: vdaras
 */

#ifndef GRAPHICS_H
#define	GRAPHICS_H

namespace sdl
{
class Color;
class Surface;
};

namespace gfx
{

/**
 * Uses the Bresenham's line drawing algorithm. Don't ask for comments, I don't know what it does I just coded the
 * algorithm. See http://en.wikipedia.org/wiki/Bresenham's_line_algorithm for further explanation.
 *
 * @param target: the surface which the line will be drawn on
 * @param x0: x coordinate of the starting point
 * @param y0: y coordinate of the starting point
 * @param x1: x coordinate of the ending point
 * @param y1: y coordinate of the ending point
 * @param color: the color of the line
 * @param thickness: thickness of the line (NOT implemented yet)
 */

void drawLine(sdl::Surface *target, int x0, int y0, int x1, int y1, const sdl::Color &color, float thickness = 1.0);


/**
 * This routine draws a non-filled rectangle on the target surface.
 *
 * @param
 * @paramtarget: the target surface
 * @param upperX: the x coordinate of the rectangle's upper left corner
 * @param upperY: the y coordinate of the rectangle's upper left corner
 * @param width: width of the rectangle
 * @param height: height of the rectangle
 * @param color: color of the rectangle
 */

void drawRect(sdl::Surface *target, int upperX, int upperY, int width, int height, const sdl::Color &color);

};

#endif	/* GRAPHICS_H */

